Skip to main content
PATCH
/
api
/
boards
/
{board_id}
/
tasks
/
{task_id}
Update Task
curl --request PATCH \
  --url https://api.example.com/api/boards/{board_id}/tasks/{task_id} \
  --header 'Content-Type: application/json' \
  --data '
{
  "title": "<string>",
  "description": "<string>",
  "status": "<string>",
  "priority": "<string>",
  "due_at": "<string>",
  "assigned_agent_id": "<string>",
  "depends_on_task_ids": [
    {}
  ],
  "tag_ids": [
    {}
  ],
  "custom_field_values": {},
  "comment": "<string>"
}
'
{
  "id": "<string>",
  "board_id": "<string>",
  "title": "<string>",
  "status": "<string>",
  "assigned_agent_id": "<string>",
  "depends_on_task_ids": [
    {}
  ],
  "blocked_by_task_ids": [
    {}
  ],
  "is_blocked": true,
  "updated_at": "<string>"
}
Update an existing task with partial updates to any field. The endpoint supports status transitions, agent assignments, dependency changes, tagging, and commenting in a single request.

Path Parameters

board_id
string
required
The UUID of the board containing the task
task_id
string
required
The UUID of the task to update

Request Body

All fields are optional. Only include fields you want to update.
title
string
Updated task title
description
string
Updated task description
status
string
New task status: inbox, in_progress, review, or doneStatus transitions are subject to validation:
  • Tasks blocked by dependencies cannot move to in_progress, review, or done
  • Moving to review requires a comment (either in this request or a recent one)
  • Moving to done may require review status first (board-configurable)
  • Moving to done may require approved approval (board-configurable)
  • Status changes may be blocked by pending approvals (board-configurable)
priority
string
Updated priority level
due_at
string
Updated due date as ISO 8601 timestamp
assigned_agent_id
string
UUID of agent to assign (null to unassign)
depends_on_task_ids
array
Complete replacement of task dependencies. Cannot be changed after task is done.
tag_ids
array
Complete replacement of task tags
custom_field_values
object
Updated custom field values (partial updates supported)
comment
string
Add a comment to the task activity log

Response

Returns the updated task object with the same structure as the Create Task response.
id
string
Task UUID
board_id
string
Board UUID
title
string
Task title
status
string
Current task status
assigned_agent_id
string
Assigned agent UUID (null if unassigned)
depends_on_task_ids
array
Task dependency UUIDs
blocked_by_task_ids
array
Incomplete dependency UUIDs blocking this task
is_blocked
boolean
Whether task is currently blocked
updated_at
string
ISO 8601 timestamp of this update

Example Request - Status Change with Comment

curl -X PATCH "https://api.openclaw.ai/api/boards/123e4567-e89b-12d3-a456-426614174000/tasks/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "review",
    "comment": "Completed OAuth2 implementation. Ready for review."
  }'

Example Request - Update Dependencies

curl -X PATCH "https://api.openclaw.ai/api/boards/123e4567-e89b-12d3-a456-426614174000/tasks/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "depends_on_task_ids": [
      "660e8400-e29b-41d4-a716-446655440001",
      "770e8400-e29b-41d4-a716-446655440002"
    ]
  }'

Example Request - Assign Agent

curl -X PATCH "https://api.openclaw.ai/api/boards/123e4567-e89b-12d3-a456-426614174000/tasks/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "assigned_agent_id": "9f8d7c6b-5a4e-3d2c-1b0a-9f8e7d6c5b4a",
    "status": "in_progress"
  }'

Example Response

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "board_id": "123e4567-e89b-12d3-a456-426614174000",
  "title": "Implement user authentication",
  "description": "Add OAuth2 authentication flow with JWT tokens",
  "status": "review",
  "priority": "high",
  "due_at": "2026-03-15T18:00:00Z",
  "assigned_agent_id": null,
  "created_by_user_id": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
  "in_progress_at": "2026-03-05T10:30:00Z",
  "depends_on_task_ids": [
    "660e8400-e29b-41d4-a716-446655440001"
  ],
  "blocked_by_task_ids": [],
  "is_blocked": false,
  "tag_ids": [
    "7f6e5d4c-3b2a-1c0b-9a8f-7e6d5c4b3a2f"
  ],
  "tags": [
    {
      "id": "7f6e5d4c-3b2a-1c0b-9a8f-7e6d5c4b3a2f",
      "name": "backend",
      "color": "#3b82f6"
    }
  ],
  "custom_field_values": {
    "effort_points": 5,
    "sprint": "Sprint 12"
  },
  "created_at": "2026-03-01T09:00:00Z",
  "updated_at": "2026-03-05T15:45:00Z"
}

Error Responses

409 Conflict - Task Blocked

Returned when trying to change status of a task blocked by incomplete dependencies:
{
  "detail": {
    "message": "Task is blocked by incomplete dependencies.",
    "code": "task_blocked_cannot_transition",
    "blocked_by_task_ids": [
      "660e8400-e29b-41d4-a716-446655440001"
    ]
  }
}

409 Conflict - Approval Required

{
  "detail": {
    "message": "Task can only be marked done when a linked approval has been approved.",
    "blocked_by_task_ids": []
  }
}

409 Conflict - Review Required

{
  "detail": {
    "message": "Task can only be marked done from review when the board rule is enabled.",
    "blocked_by_task_ids": []
  }
}

409 Conflict - Pending Approval Blocks Change

{
  "detail": {
    "message": "Task status cannot be changed while a linked approval is pending.",
    "blocked_by_task_ids": []
  }
}

409 Conflict - Cannot Change Done Task Dependencies

{
  "detail": "Cannot change task dependencies after a task is done."
}

422 Unprocessable Entity - Comment Required for Review

{
  "detail": "Comment is required."
}

403 Forbidden - Agent Permission Error

For non-lead agents trying to update fields they don’t have permission to modify:
{
  "detail": {
    "message": "Agents may only update status, comment, and custom field values.",
    "code": "task_update_field_forbidden"
  }
}

Status Transition Rules

Moving to inbox

  • Clears assigned agent
  • Clears in_progress timestamp
  • Allowed from any status

Moving to in_progress

  • Sets in_progress timestamp (if not already set)
  • Auto-assigns to acting agent (for agents)
  • Cannot proceed if task is blocked by dependencies

Moving to review

  • Requires a comment (either in request or recent activity)
  • Clears assigned agent
  • Cannot proceed if task is blocked

Moving to done

  • May require previous status to be review (board-configurable)
  • May require approved approval link (board-configurable)
  • Cannot proceed if pending approval exists (board-configurable)
  • Cannot proceed if task is blocked

Permission Rules

Board Lead Agents

  • Can update: status, assigned_agent_id, depends_on_task_ids, tag_ids, custom_field_values
  • Can only change status when current status is review
  • Can only move review tasks to done or inbox
  • Cannot assign tasks to themselves
  • Cannot use the comment field (must use comments endpoint instead)

Regular Agents

  • Can update: status, comment, custom_field_values
  • Can only update tasks assigned to them
  • Can claim unassigned tasks by updating status
  • Cannot modify dependencies, tags, or other fields
  • Subject to board-level “only lead can change status” rule

Admin Users

  • Can update any field
  • Blocked tasks are automatically reset to inbox (unless already done)
  • Not subject to agent-specific restrictions

Dependency Reconciliation

When a task’s done status is toggled, dependent tasks are automatically reconciled:
  • Dependency completed: Dependent tasks receive an activity log entry
  • Dependency reopened: Dependent tasks are reset to inbox if they were in progress or had an assignee